Disaster Risk Insurance: Insights and Recommendations

Author

SID 540325674 Project2


Client Bio and Recommendation 👨‍💼

Client: Olivier Mahul

Linkedin

Global Manager,

Climate Finance Mobilization at The World Bank

Bio

Olivier Mahul, an experienced financial economist, has dedicated his career to disaster risk financing. As the Global Manager for Climate Finance Mobilization at the World Bank, Olivier focuses on developing innovative solutions to tackle global financial risks caused by climate change. He has pioneered and implemented innovative risk finance solutions and public private insurance partnerships.

Recommendation

I recommend that the Climate Finance Mobilization Team focus on developing innovative insurance products for regions like Asia and other vulnerable regions, where there are significant gaps in disaster coverage. This protection gap poses both a risk and an opportunity for the insurance industry. By addressing these disparities, the World Bank can enhance resilience, protect vulnerable communities, and support sustainable development.

Evidence 📚

IDA

The data used in this report is sourced from Kaggle’s Natural Disasters Data Explorer(World in Data), which includes various geophysical, meteorological, and climate events over ten-year periods.

Growing Uninsured Losses (Protection Gap) by Region

Code
library(plotly)
library(ggplot2)
library(dplyr)

data <- read.csv("data/natural-disasters.csv", check.names = TRUE)

regions <- c("Asia", "Europe", "North America", "South America", "Oceania", "Africa")
years <- c(1960, 1970, 1980, 1990, 2000, 2010)

filtered_data <- data %>%
  filter(Entity %in% regions & Year %in% years) %>%
  mutate(
    Total.economic.damages.from.disasters = as.numeric(Total.economic.damages.from.disasters),
    Insured.damages.against.disasters = as.numeric(Insured.damages.against.disasters),
    Uninsured_Loss = Total.economic.damages.from.disasters - Insured.damages.against.disasters
  )

p <- ggplot(filtered_data, aes(x = Year, y = Uninsured_Loss, color = Entity, group = Entity)) +
  geom_line(size = 1) +
  geom_point(size = 2) +  
  labs(title = "Uninsured Losses by Region and Year",
       x = "Year",
       y = "Uninsured Loss",
       color = "Region") +
  theme_minimal()

ggplotly(p)

The line graph shows a growing protection gap (the difference between total economic losses and insured losses) in Asia, North America, while Europe and Africa’s have seen relatively stable uninsured losses, possibly due to better insurance coverage or lower disaster occurrence. South America and Oceania, although the subtle growth increase in uninsured losses after 2000, it highlights the need to consider disaster risk projections when assessing potential insurance market opportunities.

Regional Disparities in Insurance Coverage

Code
library(dplyr)
library(ggplot2)
library(maps)

data <- read.csv("data/natural-disasters.csv", check.names = TRUE)

df_filtered <- data %>%
  select(Entity, Year, Insured.damages.against.disasters, Total.economic.damages.from.disasters) %>%
  filter(!is.na(Insured.damages.against.disasters), !is.na(Total.economic.damages.from.disasters)) %>%
  mutate(Insured_vs_Economic = Insured.damages.against.disasters / Total.economic.damages.from.disasters)

df_filtered_2010 <- df_filtered %>%
  filter(Year == 2010) %>%
  rename(region = Entity) 

world <- map_data("world")

world_data_2010 <- left_join(world, df_filtered_2010, by = "region")

ggplot(world_data_2010, aes(x = long, y = lat, group = group, fill = Insured_vs_Economic)) +
  geom_polygon(color = "black") +
  scale_fill_distiller(palette = "RdBu", direction = 1, 
                       limits = c(0, 0.5), 
                       ) + 
  coord_fixed(1.3) +
  labs(title = "Global Insurance Coverage vs Economic Damages (2010)",
       fill = "Insurance/Economic") +
  theme_void()

Code
library(dplyr)
library(ggplot2)
library(plotly)

data <- read.csv("data/natural-disasters.csv", check.names = TRUE)

regions <- c("Asia", "Europe", "North America", "South America", "Oceania", "Africa")
years <- c(1960, 1970, 1980, 1990, 2000, 2010)

df_filtered <- data[data$Entity %in% regions & data$Year %in% years,]

df_filtered <- df_filtered %>%
  mutate(Insured_vs_Economic = Insured.damages.against.disasters / Total.economic.damages.from.disasters)


p <- ggplot(df_filtered, aes(x = Entity, y = Insured_vs_Economic, fill = Entity)) +
  geom_boxplot(color = "darkblue") +
  labs(title = "Proportion of Insured Damages to Economic Damages by Region",
       x = "Region",
       y = "Proportion of Insured to Economic Damages") +
  theme_minimal() +
  coord_flip() +
  scale_fill_manual(values = c("Asia" = "lightblue", 
                               "Europe" = "lightgreen", 
                               "North America" = "lightcoral", 
                               "South America" = "lightpink", 
                               "Oceania" = "lightgoldenrod", 
                               "Africa" = "lightcyan"))
ggplotly(p)

The graphs show that insurance payout ratios in Asia and Africa are at low levels. North America and Oceania have more mature insurance markets, but the increase in uninsured losses may be linked to the rising frequency of disasters. Therefore, priority should focuse on countries in Asia and Africa, where both low payout ratios and high disaster frequency present opportunities to reduce the protection gap.

Economic Impact of Natural Disasters by Type: A Call for Targeted Insurance Solutions

Code
library(tidyr)
library(dplyr)
library(ggplot2)
library(gganimate)  
library(RColorBrewer)
library(gifski)    

data <- read.csv("data/natural-disasters.csv", check.names = TRUE)

regions <- c("Asia", "Europe", "North America", "South America", "Oceania", "Africa")
years <- c(1960, 1970, 1980, 1990, 2000, 2010)

filtered_data <- data[data$Entity %in% regions & data$Year %in% years,]

economic_cols <- c("Total.economic.damages.from.drought.as.a.share.of.GDP", 
                   "Total.economic.damages.from.earthquakes.as.a.share.of.GDP", 
                   "Total.economic.damages.from.extreme.temperatures.as.a.share.of.GDP",
                   "Total.economic.damages.from.floods.as.a.share.of.GDP", 
                   "Total.economic.damages.from.landslides.as.a.share.of.GDP", 
                   "Total.economic.damages.from.mass.movements.as.a.share.of.GDP", 
                   "Total.economic.damages.from.storms.as.a.share.of.GDP", 
                   "Total.economic.damages.from.volcanic.activity.as.a.share.of.GDP")

melted_data <- filtered_data %>%
  pivot_longer(cols = all_of(economic_cols), 
               names_to = "Disaster_Type", 
               values_to = "Damage_Share_GDP")

melted_data$Disaster_Type <- gsub("Total.economic.damages.from.", "", melted_data$Disaster_Type)
melted_data$Disaster_Type <- gsub(".as.a.share.of.GDP", "", melted_data$Disaster_Type)

p <- ggplot(melted_data, aes(x = Entity, y = Damage_Share_GDP, fill = Disaster_Type)) +
  geom_bar(stat = "identity", position = "stack", color = "white") +  
  scale_fill_brewer(palette = "Paired") + 
  theme_minimal(base_size = 14) +  
  labs(title = "Economic Damages from Disasters as Share of GDP",
       x = "Region", y = "Share of GDP", fill = "Disaster Type") +
  theme(legend.position = "bottom",
        legend.text = element_text(size = 8), 
        axis.text.x = element_text(angle = 45, hjust = 1)) +  
  transition_states(Year, transition_length = 4, state_length = 3) +
  labs(title = 'Year: {closest_state}') +  
  ease_aes('linear')  

animate(p, nframes = 100, fps = 10, renderer = gifski_renderer())

The chart highlights that Asia faces significant economic losses from natural disasters, especially from earthquakes and floods. Insurance products tailored for these types of disasters will be crucial. During the periods of heavy impact from floods and earthquakes, there was a notable increase in uninsured losses in Oceania, indicating that a protection gap still exists. Americas, the rise in natural disasters has led to an increase in uninsured losses, but the more mature insurance market has helped mitigate the overall impact.

External Evidence Support

According to Swiss Re sigma No. 5/2015, only about 30-40% of global disaster losses are insured, with emerging economies and high-risk regions, such as Asia, Oceania, and South America, facing the largest protection gaps. This under insurance, especially in high-risk areas like earthquakes and floods, hinders post-disaster recovery. Swiss Re sigma No. 1/2016 highlights Asia’s frequent, severe natural disasters and persistently low insurance coverage.

Hypothesis Testing

Test whether the insurance coverage in Asia is significantly great than(equal to) that in North America.

A Welch-Two Sample t-test was performed with a significance value (ɑ-value) of 0.05. A significant difference is shown when: p-value < ɑ-value. The result of this test has demonstrated:

p-value = 0.04638 < ɑ-value

Therefore, Asia’s insurance coverage is significantly lower than North America’s, suggesting that more attention should be focused on closing the insurance protection gap in Asia.

Appendix: Defense of Approach ⛵

Client Choice

The focus of this report on uninsured losses and the protection gap was shaped by Olivier’s extensive background in disaster risk finance and insurance. This choice aligns with his ongoing work in promoting public-private partnerships aimed at enhancing insurance coverage in vulnerable regions.

Statistical Analysis

Linear aggression: Insured Damages vs Economic Damages

Due to the small sample size, the residual plot revealed significant errors, resulting in poor model fit. Therefore, non-linear models were adopted, better capturing the relationships between them.

Code
library(gridExtra)

linear_model <- lm(Insured.damages.against.disasters ~ Total.economic.damages.from.disasters, data = df_filtered)

df_filtered$fitted_values <- fitted(linear_model)  
df_filtered$residuals <- residuals(linear_model)   

scatter_plot <- ggplot(df_filtered, aes(x = Total.economic.damages.from.disasters, y = Insured.damages.against.disasters)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue", se = FALSE) +
  labs(title = "Linear model",
       x = "Total Economic Damages from Disasters",
       y = "Insured Damages against Disasters") +
  theme_minimal()

residual_plot <- ggplot(df_filtered, aes(x = fitted_values, y = residuals)) +
  geom_point() +
  geom_hline(yintercept = 0, col = "red", linetype = "dashed") +
  labs(title = "Residuals",
       x = "Fitted Values",
       y = "Residuals") +
  theme_minimal()

qq_plot <- ggplot(df_filtered, aes(sample = residuals)) +
  stat_qq() +
  stat_qq_line(col = "blue") +
  labs(title = "Q-Q Plot of Residuals") +
  theme_minimal()

grid.arrange(scatter_plot, residual_plot, qq_plot, ncol = 3)

Hypothesis Testing: Asia vs North America’s Insurance Coverage

Hypotheses

  • Null Hypothesis (H0): The insurance coverage in Asia is great than (equal to) that in North America.
  • Alternative Hypothesis (H1): The insurance coverage in Asia is less that in North America.

Assumption

  • The data for insurance coverage (Insured vs Economic) in both regions is assumed to be independent.
  • The t-test assumes that the distributions are approximately normal.
  • Since use Welch’s t-test, do not assume equal variances between Asia and North America.
  • Test is one-sided, as I am specifically testing whether Asia’s insurance coverage is lower than North America’s.

Test statistic t= -2.0276

P-value P = 0.04638 < 0.05

Code
library(dplyr)

data <- read.csv("data/natural-disasters.csv", check.names = TRUE)

regions <- c("Asia", "North America")
df_filtered <- data[data$Entity %in% regions,]

df_filtered <- df_filtered %>%
  mutate(Insured_vs_Economic = Insured.damages.against.disasters / Total.economic.damages.from.disasters)

asia <- df_filtered[df_filtered$Entity == "Asia", "Insured_vs_Economic"]
north_america <- df_filtered[df_filtered$Entity == "North America", "Insured_vs_Economic"]

asia <- na.omit(asia)
north_america<- na.omit(north_america)

t_test_asia_vs_north_america_one_sided <- t.test(asia, north_america, alternative = "less", var.equal = FALSE)

print(t_test_asia_vs_north_america_one_sided)

    Welch Two Sample t-test

data:  asia and north_america
t = -2.0276, df = 5.5538, p-value = 0.04638
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
         -Inf -0.005272171
sample estimates:
 mean of x  mean of y 
0.04271493 0.23341813 

Conclusion

  • The p-value of 0.04638 is less than the conventional threshold of 0.05. Therefore, we reject the null hypothesis.

  • There is significant evidence to support the claim that Asia’s insured coverage is lower than that of North America.

Limitations

  • Many data were missing or recorded as zeros, potentially leading to underestimations.

  • The historical data limited the ability to predict the impact of emerging climate challenges on insurance coverage and financial risks.

  • The analysis did not account for regional differences, may affect insurance needs in various areas.

Ethics Statement 📌

This report adheres to the International Statistics Institute’s value of integrity by ensuring transparency in methodologies and minimizing bias in data analysis. All external sources, including the Swiss Re sigma reports, are properly acknowledged.

I uphold the ethical principle of maintaining confidence in statistics by providing accurate descriptions and acknowledging limitations. My commitment to the public good is demonstrated through objective analysis aimed at improving insurance solutions for vulnerable regions. Professional integrity is ensured by using verified data sources and transparent methods.

Acknowledgements 🫂

Reference